package org.dxy.middleware.dynamic.thread.pool.application.view;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit;

/**
 * @ description: 线程池运行状态视图模型（读模型）
 * 用于监控和展示线程池实时运行状态
 * @ author: dxy
 * @ createTime: 2025/10/3 23:06
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ThreadPoolView {
    /**
     * 应用名称
     */
    private String appName;

    /**
     * 线程池名称
     */
    private String threadPoolName;

    /** 核心线程数 */
    private int corePoolSize;

    /** 最大线程数 */
    private int maximumPoolSize;

    /** 队列容量 */
    private int queueCapacity;

    /** 队列类型 */
    private String queueType;

    /** 非核心线程空闲时长数值 */
    private long keepAliveTimeValue;

    /** 非核心线程空闲时长单位 */
    private TimeUnit keepAliveTimeUnit;

    /** 核心线程是否允许超时回收 */
    private boolean allowCoreThreadTimeOut;


    // 线程池运行状态
    /**
     * 当前活跃线程数
     */
    private int activeCount;

    /**
     * 当前线程池大小
     */
    private int poolSize;

    /**
     * 历史最大线程数
     */
    private int largestPoolSize;

    /**
     * 已完成任务数
     */
    private long completedTaskCount;

    /**
     * 已提交任务数
     */
    private long taskCount;

    /**
     * 当前队列任务数
     */
    private int queueSize;

    /**
     * 队列剩余容量
     */
    private int remainingCapacity;


//    /**
//     * 线程池创建时间
//     */
//    private LocalDateTime createTime;
//
//    /**
//     * 最后更新时间
//     */
//    private LocalDateTime lastUpdateTime;
}
